package com.ibs.hadoop.hbase.console;

import com.ibs.hadoop.hbase.service.complaint.UserComplaintDataQuery;
import com.ibs.hadoop.hbase.service.complaint.impl.UserComplaintAttachQuery;
import com.ibs.hadoop.hbase.service.complaint.impl.UserComplaintDeatchQuery;
import com.ibs.hadoop.hbase.service.complaint.impl.UserComplaintDnsQuery;
import com.ibs.hadoop.hbase.service.complaint.impl.UserComplaintGetQuery;
import com.ibs.hadoop.hbase.service.complaint.impl.UserComplaintPostQuery;
import com.ibs.hadoop.hbase.service.complaint.impl.UserComplaintRcvmmsQuery;
import com.ibs.hadoop.hbase.service.complaint.impl.UserComplaintSndmmsQuery;
import com.ibs.hadoop.hbase.service.complaint.impl.UserComplaintTauQuery;

/**
 * 用户投诉流程信息
* 源文件名：UserComplaintFlow.java
* 文件版本：1.0.0
* 创建作者：Think
* 创建日期：2016年10月31日
* 修改作者：Think
* 修改日期：2016年10月31日
* 文件描述：TODO
* 版权所有：Copyright 2016 zjhz, Inc. All Rights Reserved.
*/
public enum UserComplaintFlow {

    /**
     * 用户投诉附着流程
    * @字段说明 USER_FLOW_ATTACH
    */
    USER_FLOW_ATTACH("ATTACH", UserComplaintAttachQuery.getInstance()),

    /**
     * 用户投诉去附着流程
    * @字段说明 USER_FLOW_DETACH
    */
    USER_FLOW_DETACH("DETACH", UserComplaintDeatchQuery.getInstance()),

    /**
     * 用户投诉跟踪区更新
    * @字段说明 USER_FLOW_TAU
    */
    USER_FLOW_TAU("TAU", UserComplaintTauQuery.getInstance()),

    /**
     * 用户投诉Get流程
    * @字段说明 USER_FLOW_GET
    */
    USER_FLOW_GET("GET", UserComplaintGetQuery.getInstance()),

    /**
     * 用户投诉POST流程
    * @字段说明 USER_FLOW_POST
    */
    USER_FLOW_POST("POST", UserComplaintPostQuery.getInstance()),

    /**
     * 彩信发送
    * @字段说明 USER_FLOW_SND_MMS
    */
    USER_FLOW_SND_MMS("SND_MMS", UserComplaintSndmmsQuery.getInstance()),

    /**
     * 用户投诉彩信接收
    * @字段说明 USER_FLOW_RCV_MMS
    */
    USER_FLOW_RCV_MMS("RCV_MMS", UserComplaintRcvmmsQuery.getInstance()),

    /**
     * DNS流程
    * @字段说明 USER_FLOW_DNS
    */
    USER_FLOW_DNS("DNS", UserComplaintDnsQuery.getInstance());

    /**
     * 流程的key信息
    * @字段说明 flowKey
    */
    private String flowKey;

    /**
     * 用户投诉具体处理实例对象
    * @字段说明 instance
    */
    private UserComplaintDataQuery instance;

    private UserComplaintFlow(String flowKey, UserComplaintDataQuery instance) {
        this.flowKey = flowKey;
        this.instance = instance;
    }

    public String getFlowKey() {
        return flowKey;
    }

    public void setFlowKey(String flowKey) {
        this.flowKey = flowKey;
    }

    public UserComplaintDataQuery getInstance() {
        return instance;
    }

    public void setInstance(UserComplaintDataQuery instance) {
        this.instance = instance;
    }

    public static UserComplaintDataQuery getInstance(String key) {
        for (int i = 0; i < values().length; i++) {
            if (values()[i].getFlowKey().equals(key)) {
                return values()[i].getInstance();
            }
        }

        return null;
    }

}
